export default {
  // 计算当前日期星座
  getHoroscope(date) {
    let c = ['摩羯', '水瓶', '双鱼', '白羊', '金牛', '双子', '巨蟹', '狮子', '处女', '天秤', '天蝎', '射手', '摩羯'];
    date = new Date(date);
    let month = date.getMonth() + 1;
    let day = date.getDate();
    let startMonth = month - (day - 14 < '865778999988'.charAt(month));
    return c[startMonth] + '座';
  },
  // 计算指定时间与当前的时间差
  sumAge(data) {
    let dateBegin = new Date(data.replace(/-/g, "/"));
    let dateEnd = new Date(); //获取当前时间
    let dateDiff = dateEnd.getTime() - dateBegin.getTime(); //时间差的毫秒数
    let dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
    let leave1 = dateDiff % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
    let hours = Math.floor(leave1 / (3600 * 1000)); //计算出小时数
    //计算相差分钟数
    let leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
    let minutes = Math.floor(leave2 / (60 * 1000)); //计算相差分钟数
    //计算相差秒数
    let leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
    let seconds = Math.round(leave3 / 1000);
    return dayDiff + "天 " + hours + "小时 ";
  },
  // 获取聊天时间（相差300s内的信息不会显示时间）
  getChatTime(v1, v2) {
    v1 = v1.toString().length < 13 ? v1 * 1000 : v1;
    v2 = v2.toString().length < 13 ? v2 * 1000 : v2;
    if ((parseInt(v1) - parseInt(v2)) / 1000 > 300) {
      return this.gettime(v1);
    }
  },
  // 人性化时间格式
  gettime(shorttime) {
    console.log(shorttime.toString().length);
    shorttime = shorttime.toString().length < 13 ? shorttime * 1000 : shorttime;
    let now = new Date().getTime();
    let cha = (now - parseInt(shorttime)) / 1000;
    if (cha < 43200) {
      // 当天
      return this.dateFormat(new Date(shorttime), "{A} {t}:{ii}");
    } else if (cha < 518400) {
      // 隔天 显示日期+时间
      return this.dateFormat(new Date(shorttime), "{Mon}月{DD}日 {A} {t}:{ii}");
    } else {
      // 隔年 显示完整日期+时间
      return this.dateFormat(new Date(shorttime), "{hh} {Mon} {DD}");
    }
  },

  parseNumber(num) {
    return num < 10 ? "0" + num : num;
  },
  dateFormat(date, formatStr) {
    let dateObj = {},
      rStr = /\{([^}]+)\}/,
      mons = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'];

    dateObj["Y"] = date.getFullYear();
    dateObj["M"] = date.getMonth() + 1;
    dateObj["MM"] = this.parseNumber(dateObj["M"]);
    dateObj["Mon"] = mons[dateObj['M'] - 1];
    dateObj["D"] = date.getDate();
    dateObj["DD"] = this.parseNumber(dateObj["D"]);
    dateObj["h"] = date.getHours();
    dateObj["hh"] = this.parseNumber(dateObj["h"]);
    dateObj["t"] = dateObj["h"] > 12 ? dateObj["h"] - 12 : dateObj["h"];
    dateObj["tt"] = this.parseNumber(dateObj["t"]);
    dateObj["A"] = dateObj["h"] > 12 ? '下午' : '上午';
    dateObj["i"] = date.getMinutes();
    dateObj["ii"] = this.parseNumber(dateObj["i"]);
    dateObj["s"] = date.getSeconds();
    dateObj["ss"] = this.parseNumber(dateObj["s"]);
    while (rStr.test(formatStr)) {

      formatStr = formatStr.replace(rStr, dateObj[RegExp.$1]);
    }
    return formatStr;
  },
  // 获取年龄
  getAgeByBirthday(data) {
    let birthday = new Date(data.replace(/-/g, "\/"));
    let d = new Date();
    return d.getFullYear() - birthday.getFullYear() - (d.getMonth() < birthday.getMonth() || d.getMonth() == birthday.getMonth() && d.getDate() < birthday.getDate() ? 1 : 0);
  },
  // 倒计时
  timeDown(endTime) {
    //获取时间差
    let now = new Date().getTime() / 1000;
    let totalSeconds = parseInt(endTime - now);
    //天数
    var days = Math.floor(totalSeconds / (60 * 60 * 24));
    //取模（余数）
    var modulo = totalSeconds % (60 * 60 * 24);
    //小时数
    var hours = Math.floor(modulo / (60 * 60));
    modulo = modulo % (60 * 60);
    //分钟
    var minutes = Math.floor(modulo / 60);
    //秒
    var seconds = modulo % 60;
    //输出还剩多少时间
    //return `${days}天 ${hours}小时 ${minutes}分 ${seconds}秒`
    var time = {
      days: days,
      hours: this.checkCount(hours),
      minutes: this.checkCount(minutes),
      seconds: this.checkCount(seconds)
    };
    return time;
  },
  //校验是否两位数
  checkCount(num) {
    if (num < 10) {
      return "0" + num;
    }
    return num;
  },
  // 人性化时间格式
  getSimpleTime(shorttime) {
    shorttime = shorttime.toString().length < 13 ? shorttime * 1000 : shorttime;
    let now = new Date().getTime();
    let cha = (now - parseInt(shorttime)) / 1000;
    if (cha < 43200) {
      // 当天
      return this.dateFormat(new Date(shorttime), "{A} {t}:{ii}");
    } else {
      // 隔天 显示日期+时间
      return this.dateFormat(new Date(shorttime), "{Mon}月{DD}日");
    }
  },
  // 人性化时间格式
  getRedirectTime(shorttime) {
    shorttime = shorttime.toString().length < 13 ? shorttime * 1000 : shorttime;
    let now = new Date().getTime();
    let cha = (now - parseInt(shorttime)) / 1000;
    return this.dateFormat(new Date(shorttime), "{Y}-{MM}-{DD}");
  },
  // 时间戳计算剩余时间
  getVipTime(time) {
    let date = new Date(time);
    let now = new Date();
    let diff = date.getTime() - now.getTime();
    let day = Math.floor(diff / (24 * 3600 * 1000));
    let hour = Math.floor(diff / (3600 * 1000));
    let min = Math.floor(diff / (60 * 1000));
    let sec = Math.floor(diff / 1000);
    if (day > 0) {
      return {
        dateStr: day + "天",
        date: day
      };
    } else if (hour > 0) {
      return {
        dateStr: hour + "小时",
        date: hour
      };
    } else if (min > 0) {
      return {
        dateStr: min + "分钟",
        date: min
      };
    } else if (sec > 0) {
      return {
        dateStr: sec + "秒",
        date: sec
      };
    } else {
      return {
        dateStr: '',
        date: '已过期'
      };
    }
  }
};